<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.14"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>PxControllerManager Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
  $(document).ready(initResizable);
/* @license-end */</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="PhysXLogoBlack.png"/></td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.14 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('classPxControllerManager.html','');});
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="classPxControllerManager-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">PxControllerManager Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span><div class="ingroups"><a class="el" href="group__character.html">Character</a></div></div>  </div>
</div><!--header-->
<div class="contents">

<p>Manages an array of character controllers.  
 <a href="classPxControllerManager.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="PxControllerManager_8h_source.html">PxControllerManager.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a9aa7bd9fd20e8559488cb1866dfe5822"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPxControllerManager.html#a9aa7bd9fd20e8559488cb1866dfe5822">release</a> ()=0</td></tr>
<tr class="memdesc:a9aa7bd9fd20e8559488cb1866dfe5822"><td class="mdescLeft">&#160;</td><td class="mdescRight">Releases the controller manager.  <a href="#a9aa7bd9fd20e8559488cb1866dfe5822">More...</a><br /></td></tr>
<tr class="separator:a9aa7bd9fd20e8559488cb1866dfe5822"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a86e943ddc5db86e23b9f31eeff908a74"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classPxScene.html">PxScene</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPxControllerManager.html#a86e943ddc5db86e23b9f31eeff908a74">getScene</a> () const =0</td></tr>
<tr class="memdesc:a86e943ddc5db86e23b9f31eeff908a74"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the scene the manager is adding the controllers to.  <a href="#a86e943ddc5db86e23b9f31eeff908a74">More...</a><br /></td></tr>
<tr class="separator:a86e943ddc5db86e23b9f31eeff908a74"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad1d6b4793e98229d31627a96c279171d"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="group__foundation.html#gacce5749db3dcfb916e98c253374264ed">PxU32</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPxControllerManager.html#ad1d6b4793e98229d31627a96c279171d">getNbControllers</a> () const =0</td></tr>
<tr class="memdesc:ad1d6b4793e98229d31627a96c279171d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of controllers that are being managed.  <a href="#ad1d6b4793e98229d31627a96c279171d">More...</a><br /></td></tr>
<tr class="separator:ad1d6b4793e98229d31627a96c279171d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a42359d7248cfdf2b4722a8d4653394b5"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classPxController.html">PxController</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPxControllerManager.html#a42359d7248cfdf2b4722a8d4653394b5">getController</a> (<a class="el" href="group__foundation.html#gacce5749db3dcfb916e98c253374264ed">PxU32</a> index)=0</td></tr>
<tr class="memdesc:a42359d7248cfdf2b4722a8d4653394b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve one of the controllers in the manager.  <a href="#a42359d7248cfdf2b4722a8d4653394b5">More...</a><br /></td></tr>
<tr class="separator:a42359d7248cfdf2b4722a8d4653394b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8e05d3238438b16de95f5f8d04b5c674"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classPxController.html">PxController</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPxControllerManager.html#a8e05d3238438b16de95f5f8d04b5c674">createController</a> (const <a class="el" href="classPxControllerDesc.html">PxControllerDesc</a> &amp;desc)=0</td></tr>
<tr class="memdesc:a8e05d3238438b16de95f5f8d04b5c674"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new character controller.  <a href="#a8e05d3238438b16de95f5f8d04b5c674">More...</a><br /></td></tr>
<tr class="separator:a8e05d3238438b16de95f5f8d04b5c674"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a78043dd98d6ff9c6fec577fb367a3a1f"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPxControllerManager.html#a78043dd98d6ff9c6fec577fb367a3a1f">purgeControllers</a> ()=0</td></tr>
<tr class="memdesc:a78043dd98d6ff9c6fec577fb367a3a1f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Releases all the controllers that are being managed.  <a href="#a78043dd98d6ff9c6fec577fb367a3a1f">More...</a><br /></td></tr>
<tr class="separator:a78043dd98d6ff9c6fec577fb367a3a1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa6b2e7140e13c739ccf089331b434606"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classPxRenderBuffer.html">PxRenderBuffer</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPxControllerManager.html#aa6b2e7140e13c739ccf089331b434606">getRenderBuffer</a> ()=0</td></tr>
<tr class="memdesc:aa6b2e7140e13c739ccf089331b434606"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves debug data.  <a href="#aa6b2e7140e13c739ccf089331b434606">More...</a><br /></td></tr>
<tr class="separator:aa6b2e7140e13c739ccf089331b434606"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6748551f35cb6eee1048e810f09fb9b9"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPxControllerManager.html#a6748551f35cb6eee1048e810f09fb9b9">setDebugRenderingFlags</a> (<a class="el" href="group__character.html#ga2404e3aa455180820b7fa4900d75f18e">PxControllerDebugRenderFlags</a> <a class="el" href="PxConstraintDesc_8h.html#acfdd81caa30ceb0af5fafb4064b1bc67">flags</a>)=0</td></tr>
<tr class="memdesc:a6748551f35cb6eee1048e810f09fb9b9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets debug rendering flags.  <a href="#a6748551f35cb6eee1048e810f09fb9b9">More...</a><br /></td></tr>
<tr class="separator:a6748551f35cb6eee1048e810f09fb9b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a328d22226d7cddc2ad141a94b229a83d"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="group__foundation.html#gacce5749db3dcfb916e98c253374264ed">PxU32</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPxControllerManager.html#a328d22226d7cddc2ad141a94b229a83d">getNbObstacleContexts</a> () const =0</td></tr>
<tr class="memdesc:a328d22226d7cddc2ad141a94b229a83d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of obstacle contexts that are being managed.  <a href="#a328d22226d7cddc2ad141a94b229a83d">More...</a><br /></td></tr>
<tr class="separator:a328d22226d7cddc2ad141a94b229a83d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abbeb2ff37ca2eca61db437c284430441"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classPxObstacleContext.html">PxObstacleContext</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPxControllerManager.html#abbeb2ff37ca2eca61db437c284430441">getObstacleContext</a> (<a class="el" href="group__foundation.html#gacce5749db3dcfb916e98c253374264ed">PxU32</a> index)=0</td></tr>
<tr class="memdesc:abbeb2ff37ca2eca61db437c284430441"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve one of the obstacle contexts in the manager.  <a href="#abbeb2ff37ca2eca61db437c284430441">More...</a><br /></td></tr>
<tr class="separator:abbeb2ff37ca2eca61db437c284430441"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a22ddf4ab29a6f71e6c053fffc02e8084"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classPxObstacleContext.html">PxObstacleContext</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPxControllerManager.html#a22ddf4ab29a6f71e6c053fffc02e8084">createObstacleContext</a> ()=0</td></tr>
<tr class="memdesc:a22ddf4ab29a6f71e6c053fffc02e8084"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates an obstacle context.  <a href="#a22ddf4ab29a6f71e6c053fffc02e8084">More...</a><br /></td></tr>
<tr class="separator:a22ddf4ab29a6f71e6c053fffc02e8084"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a68b50621423ec866d69fdbef95d43ae6"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPxControllerManager.html#a68b50621423ec866d69fdbef95d43ae6">computeInteractions</a> (PxF32 elapsedTime, <a class="el" href="classPxControllerFilterCallback.html">PxControllerFilterCallback</a> *cctFilterCb=NULL)=0</td></tr>
<tr class="memdesc:a68b50621423ec866d69fdbef95d43ae6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes character-character interactions.  <a href="#a68b50621423ec866d69fdbef95d43ae6">More...</a><br /></td></tr>
<tr class="separator:a68b50621423ec866d69fdbef95d43ae6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a801c7a25dc888d307bfee0e119e43724"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPxControllerManager.html#a801c7a25dc888d307bfee0e119e43724">setTessellation</a> (bool flag, float maxEdgeLength)=0</td></tr>
<tr class="memdesc:a801c7a25dc888d307bfee0e119e43724"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables or disables runtime tessellation.  <a href="#a801c7a25dc888d307bfee0e119e43724">More...</a><br /></td></tr>
<tr class="separator:a801c7a25dc888d307bfee0e119e43724"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b82dfa1f30ab934fa287f1e3aabf3cf"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPxControllerManager.html#a7b82dfa1f30ab934fa287f1e3aabf3cf">setOverlapRecoveryModule</a> (bool flag)=0</td></tr>
<tr class="memdesc:a7b82dfa1f30ab934fa287f1e3aabf3cf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables or disables the overlap recovery module.  <a href="#a7b82dfa1f30ab934fa287f1e3aabf3cf">More...</a><br /></td></tr>
<tr class="separator:a7b82dfa1f30ab934fa287f1e3aabf3cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaa88f335b64ec33775ec73fb532c920f"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPxControllerManager.html#aaa88f335b64ec33775ec73fb532c920f">setPreciseSweeps</a> (bool flag)=0</td></tr>
<tr class="memdesc:aaa88f335b64ec33775ec73fb532c920f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables or disables the precise sweeps.  <a href="#aaa88f335b64ec33775ec73fb532c920f">More...</a><br /></td></tr>
<tr class="separator:aaa88f335b64ec33775ec73fb532c920f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaa9553cd92772fcfc583aff5678f7ef0"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPxControllerManager.html#aaa9553cd92772fcfc583aff5678f7ef0">setPreventVerticalSlidingAgainstCeiling</a> (bool flag)=0</td></tr>
<tr class="memdesc:aaa9553cd92772fcfc583aff5678f7ef0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables or disables vertical sliding against ceilings.  <a href="#aaa9553cd92772fcfc583aff5678f7ef0">More...</a><br /></td></tr>
<tr class="separator:aaa9553cd92772fcfc583aff5678f7ef0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6cbb06688c15bed0838ee051127905f8"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPxControllerManager.html#a6cbb06688c15bed0838ee051127905f8">shiftOrigin</a> (const <a class="el" href="classPxVec3.html">PxVec3</a> &amp;shift)=0</td></tr>
<tr class="memdesc:a6cbb06688c15bed0838ee051127905f8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Shift the origin of the character controllers and obstacle objects by the specified vector.  <a href="#a6cbb06688c15bed0838ee051127905f8">More...</a><br /></td></tr>
<tr class="separator:a6cbb06688c15bed0838ee051127905f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:a801a75dc7e874c8f65e13baa5aaf6a04"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPxControllerManager.html#a801a75dc7e874c8f65e13baa5aaf6a04">PxControllerManager</a> ()</td></tr>
<tr class="separator:a801a75dc7e874c8f65e13baa5aaf6a04"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a931109408845159d19f7bf78cc6e2649"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPxControllerManager.html#a931109408845159d19f7bf78cc6e2649">~PxControllerManager</a> ()</td></tr>
<tr class="separator:a931109408845159d19f7bf78cc6e2649"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Manages an array of character controllers. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classPxController.html" title="Base class for character controllers. ">PxController</a> <a class="el" href="classPxBoxController.html" title="Box character controller. ">PxBoxController</a> <a class="el" href="classPxCapsuleController.html" title="A capsule character controller. ">PxCapsuleController</a> </dd></dl>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a801a75dc7e874c8f65e13baa5aaf6a04"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a801a75dc7e874c8f65e13baa5aaf6a04">&#9670;&nbsp;</a></span>PxControllerManager()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">PxControllerManager::PxControllerManager </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a931109408845159d19f7bf78cc6e2649"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a931109408845159d19f7bf78cc6e2649">&#9670;&nbsp;</a></span>~PxControllerManager()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual PxControllerManager::~PxControllerManager </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a68b50621423ec866d69fdbef95d43ae6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a68b50621423ec866d69fdbef95d43ae6">&#9670;&nbsp;</a></span>computeInteractions()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void PxControllerManager::computeInteractions </td>
          <td>(</td>
          <td class="paramtype">PxF32&#160;</td>
          <td class="paramname"><em>elapsedTime</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classPxControllerFilterCallback.html">PxControllerFilterCallback</a> *&#160;</td>
          <td class="paramname"><em>cctFilterCb</em> = <code>NULL</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Computes character-character interactions. </p>
<p>This function is an optional helper to properly resolve interactions between characters, in case they overlap (which can happen for gameplay reasons, etc).</p>
<p>You should call this once per frame, before your <a class="el" href="classPxController.html#a1cbd9da6b634f45585df92bb71e37782" title="Moves the character using a &quot;collide-and-slide&quot; algorithm. ">PxController::move()</a> calls. The function will not move the characters directly, but it will compute overlap information for each character that will be used in the next move() call.</p>
<p>You need to provide a proper time value here so that interactions are resolved in a way that do not depend on the framerate.</p>
<p>If you only have one character in the scene, or if you can guarantee your characters will never overlap, then you do not need to call this function.</p>
<dl class="section note"><dt>Note</dt><dd>Releasing the manager will automatically release all the associated obstacle contexts.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">elapsedTime</td><td>Elapsed time since last call </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cctFilterCb</td><td>Filtering callback for CCT-vs-CCT interactions </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a8e05d3238438b16de95f5f8d04b5c674"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8e05d3238438b16de95f5f8d04b5c674">&#9670;&nbsp;</a></span>createController()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classPxController.html">PxController</a>* PxControllerManager::createController </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classPxControllerDesc.html">PxControllerDesc</a> &amp;&#160;</td>
          <td class="paramname"><em>desc</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Creates a new character controller. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">desc</td><td>The controllers descriptor </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The new controller</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classPxController.html" title="Base class for character controllers. ">PxController</a> <a class="el" href="classPxController.html#a0ed314c5bf5dd95f9f340de15efb5776" title="Releases the controller. ">PxController.release()</a> <a class="el" href="classPxControllerDesc.html" title="Descriptor class for a character controller. ">PxControllerDesc</a> </dd></dl>

</div>
</div>
<a id="a22ddf4ab29a6f71e6c053fffc02e8084"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a22ddf4ab29a6f71e6c053fffc02e8084">&#9670;&nbsp;</a></span>createObstacleContext()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classPxObstacleContext.html">PxObstacleContext</a>* PxControllerManager::createObstacleContext </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Creates an obstacle context. </p>
<dl class="section return"><dt>Returns</dt><dd>New obstacle context</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classPxObstacleContext.html" title="Context class for obstacles. ">PxObstacleContext</a> </dd></dl>

</div>
</div>
<a id="a42359d7248cfdf2b4722a8d4653394b5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a42359d7248cfdf2b4722a8d4653394b5">&#9670;&nbsp;</a></span>getController()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classPxController.html">PxController</a>* PxControllerManager::getController </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__foundation.html#gacce5749db3dcfb916e98c253374264ed">PxU32</a>&#160;</td>
          <td class="paramname"><em>index</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Retrieve one of the controllers in the manager. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">index</td><td>the index of the controller to return </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The controller with the specified index. </dd></dl>

</div>
</div>
<a id="ad1d6b4793e98229d31627a96c279171d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad1d6b4793e98229d31627a96c279171d">&#9670;&nbsp;</a></span>getNbControllers()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="group__foundation.html#gacce5749db3dcfb916e98c253374264ed">PxU32</a> PxControllerManager::getNbControllers </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Returns the number of controllers that are being managed. </p>
<dl class="section return"><dt>Returns</dt><dd>The number of controllers. </dd></dl>

</div>
</div>
<a id="a328d22226d7cddc2ad141a94b229a83d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a328d22226d7cddc2ad141a94b229a83d">&#9670;&nbsp;</a></span>getNbObstacleContexts()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="group__foundation.html#gacce5749db3dcfb916e98c253374264ed">PxU32</a> PxControllerManager::getNbObstacleContexts </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Returns the number of obstacle contexts that are being managed. </p>
<dl class="section return"><dt>Returns</dt><dd>The number of obstacle contexts. </dd></dl>

</div>
</div>
<a id="abbeb2ff37ca2eca61db437c284430441"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abbeb2ff37ca2eca61db437c284430441">&#9670;&nbsp;</a></span>getObstacleContext()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classPxObstacleContext.html">PxObstacleContext</a>* PxControllerManager::getObstacleContext </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__foundation.html#gacce5749db3dcfb916e98c253374264ed">PxU32</a>&#160;</td>
          <td class="paramname"><em>index</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Retrieve one of the obstacle contexts in the manager. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">index</td><td>The index of the obstacle context to retrieve. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The obstacle context with the specified index. </dd></dl>

</div>
</div>
<a id="aa6b2e7140e13c739ccf089331b434606"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa6b2e7140e13c739ccf089331b434606">&#9670;&nbsp;</a></span>getRenderBuffer()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classPxRenderBuffer.html">PxRenderBuffer</a>&amp; PxControllerManager::getRenderBuffer </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Retrieves debug data. </p>
<dl class="section return"><dt>Returns</dt><dd>The render buffer filled with debug-render data</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classPxControllerManager.html#a6748551f35cb6eee1048e810f09fb9b9" title="Sets debug rendering flags. ">PxControllerManager.setDebugRenderingFlags()</a> </dd></dl>

</div>
</div>
<a id="a86e943ddc5db86e23b9f31eeff908a74"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a86e943ddc5db86e23b9f31eeff908a74">&#9670;&nbsp;</a></span>getScene()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classPxScene.html">PxScene</a>&amp; PxControllerManager::getScene </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Returns the scene the manager is adding the controllers to. </p>
<dl class="section return"><dt>Returns</dt><dd>The associated physics scene. </dd></dl>

</div>
</div>
<a id="a78043dd98d6ff9c6fec577fb367a3a1f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a78043dd98d6ff9c6fec577fb367a3a1f">&#9670;&nbsp;</a></span>purgeControllers()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void PxControllerManager::purgeControllers </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Releases all the controllers that are being managed. </p>

</div>
</div>
<a id="a9aa7bd9fd20e8559488cb1866dfe5822"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9aa7bd9fd20e8559488cb1866dfe5822">&#9670;&nbsp;</a></span>release()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void PxControllerManager::release </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Releases the controller manager. </p>
<dl class="section note"><dt>Note</dt><dd>This will release all associated controllers and obstacle contexts.</dd>
<dd>
This function is required to be called to release foundation usage. </dd></dl>

</div>
</div>
<a id="a6748551f35cb6eee1048e810f09fb9b9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6748551f35cb6eee1048e810f09fb9b9">&#9670;&nbsp;</a></span>setDebugRenderingFlags()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void PxControllerManager::setDebugRenderingFlags </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__character.html#ga2404e3aa455180820b7fa4900d75f18e">PxControllerDebugRenderFlags</a>&#160;</td>
          <td class="paramname"><em>flags</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Sets debug rendering flags. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">flags</td><td>The debug rendering flags (combination of PxControllerDebugRenderFlags)</td></tr>
  </table>
  </dd>
</dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classPxControllerManager.html#aa6b2e7140e13c739ccf089331b434606" title="Retrieves debug data. ">PxControllerManager.getRenderBuffer()</a> <a class="el" href="group__character.html#ga2404e3aa455180820b7fa4900d75f18e" title="Bitfield that contains a set of raised flags defined in PxControllerDebugRenderFlag. ">PxControllerDebugRenderFlags</a> </dd></dl>

</div>
</div>
<a id="a7b82dfa1f30ab934fa287f1e3aabf3cf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7b82dfa1f30ab934fa287f1e3aabf3cf">&#9670;&nbsp;</a></span>setOverlapRecoveryModule()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void PxControllerManager::setOverlapRecoveryModule </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>flag</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Enables or disables the overlap recovery module. </p>
<p>The overlap recovery module can be used to depenetrate CCTs from static objects when an overlap is detected. This can happen in three main cases:</p><ul>
<li>when the CCT is directly spawned or teleported in another object</li>
<li>when the CCT algorithm fails due to limited FPU accuracy</li>
<li>when the "up vector" is modified, making the rotated CCT shape overlap surrounding objects</li>
</ul>
<p>When activated, the CCT module will automatically try to resolve the penetration, and move the CCT to a safe place where it does not overlap other objects anymore. This only concerns static objects, dynamic objects are ignored by the recovery module.</p>
<p>When the recovery module is not activated, it is possible for the CCTs to go through static objects. By default, the recovery module is enabled.</p>
<p>The recovery module currently works with all geometries except heightfields.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">flag</td><td>True/false to enable/disable overlap recovery module. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="aaa88f335b64ec33775ec73fb532c920f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaa88f335b64ec33775ec73fb532c920f">&#9670;&nbsp;</a></span>setPreciseSweeps()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void PxControllerManager::setPreciseSweeps </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>flag</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Enables or disables the precise sweeps. </p>
<p>Precise sweeps are more accurate, but also potentially slower than regular sweeps.</p>
<p>By default, precise sweeps are enabled.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">flag</td><td>True/false to enable/disable precise sweeps. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="aaa9553cd92772fcfc583aff5678f7ef0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaa9553cd92772fcfc583aff5678f7ef0">&#9670;&nbsp;</a></span>setPreventVerticalSlidingAgainstCeiling()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void PxControllerManager::setPreventVerticalSlidingAgainstCeiling </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>flag</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Enables or disables vertical sliding against ceilings. </p>
<p>Geometry is seen as "ceilings" when the following condition is met:</p>
<p>dot product(contact normal, up direction)&lt;0.0f</p>
<p>This flag controls whether characters should slide vertically along the geometry in that case.</p>
<p>By default, sliding is allowed.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">flag</td><td>True/false to enable/disable sliding. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a801c7a25dc888d307bfee0e119e43724"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a801c7a25dc888d307bfee0e119e43724">&#9670;&nbsp;</a></span>setTessellation()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void PxControllerManager::setTessellation </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>flag</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>maxEdgeLength</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Enables or disables runtime tessellation. </p>
<p>Large triangles can create accuracy issues in the sweep code, which in turn can lead to characters not sliding smoothly against geometries, or even penetrating them. This feature allows one to reduce those issues by tessellating large triangles at runtime, before performing sweeps against them. The amount of tessellation is controlled by the 'maxEdgeLength' parameter. Any triangle with at least one edge length greater than the maxEdgeLength will get recursively tessellated, until resulting triangles are small enough.</p>
<p>This features only applies to triangle meshes, convex meshes, heightfields and boxes.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">flag</td><td>True/false to enable/disable runtime tessellation. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">maxEdgeLength</td><td>Max edge length allowed before tessellation kicks in. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a6cbb06688c15bed0838ee051127905f8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6cbb06688c15bed0838ee051127905f8">&#9670;&nbsp;</a></span>shiftOrigin()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void PxControllerManager::shiftOrigin </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classPxVec3.html">PxVec3</a> &amp;&#160;</td>
          <td class="paramname"><em>shift</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Shift the origin of the character controllers and obstacle objects by the specified vector. </p>
<p>The positions of all character controllers, obstacle objects and the corresponding data structures will get adjusted to reflect the shifted origin location (the shift vector will get subtracted from all character controller and obstacle object positions).</p>
<dl class="section note"><dt>Note</dt><dd>It is the user's responsibility to keep track of the summed total origin shift and adjust all input/output to/from PhysXCharacterKinematic accordingly.</dd>
<dd>
This call will not automatically shift the PhysX scene and its objects. You need to call <a class="el" href="classPxScene.html#a3cb2b6b3b72cefb94fa9e64ca09660f6" title="Shift the scene origin by the specified vector. ">PxScene::shiftOrigin()</a> seperately to keep the systems in sync.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">shift</td><td>Translation vector to shift the origin by. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="PxControllerManager_8h_source.html">PxControllerManager.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.14-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="classPxControllerManager.html">PxControllerManager</a></li>
    <li class="footer">Copyright &copy; 2008-2021 NVIDIA Corporation, 2788 San Tomas Expressway, Santa Clara, CA 95051 U.S.A. All rights reserved. <a href="http://www.nvidia.com ">www.nvidia.com</a></li>
  </ul>
</div>
</body>
</html>
